Most present microprocessors include not only random-access memory (RAM) and read-only memory (ROM) associated with a central processor unit (CPU) to enable the CPU to operate, but also electrically erasable programmable ROM (EEPROM) containing data specific to the bearer of the card and the basic application for which the card is intended. Operators, i.e. the companies that purchase cards from manufacturers to make them available to users, are demanding more and more frequently that a program which is personal to such operators be loaded in the EEPROM. For example, in a microprocessor card for radiocommunications purposes, certain operators require a voice message program to be installed. When the link between the EEPROM and the central unit is left entirely free, allowing the operator to load a program written in a language that is directly understandable for the CPU, then full control over the CPU is made available during program execution without any monitoring by the card manufacturer's operating system, i.e. the operating system is bypassed. Given control over the CPU, the operator's program can contain instructions giving access to any of the information contained in the card, including information that ought normally to be protected from the operator.
To avoid the operator's program taking control over the CPU, microprocessor cards are known in which the memory containing the operator's program needs to be loaded with special commands that are checked by an interpreter disposed between the memory and the CPU, the function of the interpreter being to verify that each command does not compromise the security of information present in the card and to transform the command into an instruction that is executable by the CPU. The drawback of such a system is that it is necessary to write the operator's program on the basis of commands understandable to the interpreter, which limits the options available to the operator's program. In addition, the operator's program is not executed directly but is initially transformed by the interpreter so that program execution speed suffers.